//package com.ht.pms.core.service.impl;
//
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.alibaba.fastjson.JSONPath;
//import com.baomidou.mybatisplus.mapper.EntityWrapper;
//import com.dingtalk.api.DefaultDingTalkClient;
//import com.dingtalk.api.DingTalkClient;
//import com.dingtalk.api.request.OapiMediaUploadRequest;
//import com.dingtalk.api.request.OapiMessageCorpconversationAsyncsendV2Request;
//import com.dingtalk.api.response.OapiMediaUploadResponse;
//import com.dingtalk.api.response.OapiMessageCorpconversationAsyncsendV2Response;
//import com.ht.pms.core.dto.*;
//import com.ht.pms.core.dto.dingding.SendDingdingMsgVo;
//import com.ht.pms.core.feign.EipoutFeign;
//import com.ht.pms.core.service.*;
//import com.ht.pms.core.util.WordAction;
//import com.ht.ussp.core.Result;
//import com.ht.ussp.util.DateUtil;
//import com.ht.ussp.util.JsonUtil;
//import com.taobao.api.FileItem;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Service;
//import org.springframework.util.CollectionUtils;
//import org.springframework.util.StringUtils;
//
//import java.util.*;
//
///**
// * @Auther: 喻尊龙
// * @Date: 2019/1/7 14:05
// * @Description:
// */
//@Service
//public class DDCalbackServiceImpl implements DDCalbackService {
//
//    private static final Logger LOG = LoggerFactory.getLogger(DDCalbackServiceImpl.class);
//
//    /**
//     * 融易行报销
//     */
//    private final static String APPLY_MONEY_RYX = "PROC-F4604728-0F1C-409A-9A10-096011AC1147";
//    /**
//     * 富成报销
//     */
//    private final static String APPLY_MONEY_FC = "PROC-6AFA1615-8A89-4ADA-9BE8-EA4A54268B1E";
//    /**
//     * 富成借款
//     */
//    private final static String BORROW_MONEY_FC = "PROC-1E06D0B9-1193-4AE1-B717-B3CD984EE697";
//    /**
//     * 富成法务费
//     */
//    private final static String LAW_FEE_FC = "PROC-DFYJXX2V-4J0Z6VHFO6TPXTO51WJS1-7HLHEKMJ-2";
//
//    /**
//     * 富成资金调拨
//     */
//    private final static String BANK_TREASURER_FC = "PROC-RIYJTXWV-EIZYJPMLPRHYZWIDDQBM1-TPS1ZJMJ-N";
//
//    private final static String NORMAL_FEE_FC = "PROC-CFYJQ98V-D9A2I0MC45E4OBJ0034T2-JC5266RJ-T";
//
//
//    @Autowired
//    private EipoutFeign eipoutFeign;
//
//
//    private String token = "";
//
//    @Value("${pms.isSendToTruePerson}")
//    private String isSend2TruePerson;
//
//    @Value("${pms.sendUserId}")
//    private String sendUserId;
//
//    @Value("${pms.fc.agentId}")
//    private Long agentIdFc;
//
//    @Value("${pms.ryx.agentId}")
//    private Long agentIdRyx;
//
//    @Autowired
//    private ApplyReimbursementService applyReimbursementService;
//
//    @Autowired
//    private ApplyReimbursementProcessService applyReimbursementProcessService;
//
//    @Autowired
//    private ApplyReimbursementDetailService applyReimbursementDetailService;
//
//    @Autowired
//    private DdUserSynService ddUserSynService;
//
//    @Autowired
//    private WordAction wordAction;
//
//    @Override
//    public void approveSuccessCalback(Map<String, Object> req) throws Exception {
//        LOG.info("审批回调信息：【{}】",JsonUtil.obj2Str(req));
//        String processCode = req.get("processCode")+"";
//        String processInstanceId = req.get("processInstanceId")+"";
//        String type = req.get("type")+"";
//        String EventType = req.get("EventType")+"";
//        String result = req.get("result")+"";
//
//
//        if("bpms_instance_change".equals(EventType) && "finish".equals(type) && "agree".equals(result) ){
//            senBills(processCode, processInstanceId);
//        }else {
//            LOG.info("无需处理的审批信息：审批类型【{}】；审批状态【{}】,审批结果【{}】",EventType,type,result);
//        }
//
//
//
//    }
//
//    public void senBills(String processCode, String processInstanceId) throws Exception {
//        if(APPLY_MONEY_RYX.equals(processCode)){
//            return;
//        }
//
//        //根据processCode 判断companyType
//        String companyType = ProcessCodeEnum.getCompanyTypeByProcessCode(processCode);
//
//        //获取钉钉token
//        token = getToken(companyType);
//        String approveId = "";
//        Map<String, Object> approvesDetails = requestForApproveDetailsFromEip(processInstanceId);
//        if (approvesDetails != null) {
//            String overTimeDetailResp = approvesDetails.get("approveDetailResp") + "";
//
//            Map<String,Object> resultMap = new HashMap<>();
//
//            if(APPLY_MONEY_RYX.equals(processCode)){
//                //融易行报销
//                resultMap = getExpenseAccountForRyx(overTimeDetailResp,processInstanceId,companyType);
//            }else if(APPLY_MONEY_FC.equals(processCode)){
//                //富成报销
//                resultMap = getExpenseAccountForRyx(overTimeDetailResp,processInstanceId,companyType);
//            }else if(LAW_FEE_FC.equals(processCode)){
//                //富成服务费
//                resultMap = getLawFeeBillForFc(overTimeDetailResp,processInstanceId,companyType);
//            }else if(BORROW_MONEY_FC.equals(processCode)){
//                //富成借款
//                resultMap = getBorrowMonyBillForFc(overTimeDetailResp,processInstanceId,companyType);
//            }else if(BANK_TREASURER_FC.equals(processCode)){
//                //富成资金调拨
//                resultMap = getBankTreasurerInfo(overTimeDetailResp,processInstanceId,companyType);
//            }else if(NORMAL_FEE_FC.equals(processCode)){
//                // 富成 常用报销
//                resultMap = getExpenseAccountForRyx(overTimeDetailResp,processInstanceId,companyType);
//            }
//
//            ApplyReimbursement applyReimbursement = (ApplyReimbursement)resultMap.get("applyReimbursement");
//            if(applyReimbursement != null){
//                approveId = applyReimbursement.getApproveId();
//                applyReimbursement.setCreateTime(DateUtil.getNow());
//                applyReimbursementService.insert(applyReimbursement);
//            }
//            if(resultMap.get("applyReimbursementDetails")!=null){
//                List<ApplyReimbursementDetail> applyReimbursementDetails = (List<ApplyReimbursementDetail>) resultMap.get("applyReimbursementDetails");
//                String payType = resultMap.get("payType")+"";
//                for (ApplyReimbursementDetail detail:applyReimbursementDetails){
//                    detail.setPayType(payType);
//                }
//                applyReimbursementDetailService.delete(new EntityWrapper<ApplyReimbursementDetail>().eq("approve_id",approveId));
//                applyReimbursementDetailService.insertBatch(applyReimbursementDetails);
//            }
//            if(resultMap.get("applyReimbursementProcessList")!=null){
//                List<ApplyReimbursementProcess> applyReimbursementProcessList = (List<ApplyReimbursementProcess>)resultMap.get("applyReimbursementProcessList");
//                applyReimbursementProcessService.delete(new EntityWrapper<ApplyReimbursementProcess>().eq("approve_id",approveId));
//                applyReimbursementProcessService.insertBatch(applyReimbursementProcessList);
//            }
//        }
//
//
//        // 更新名称和职位信息
//        applyReimbursementService.updateUserName();
//        applyReimbursementProcessService.updateUserNameAndPosition();
//        // 找所有审批通过 未发送的单，发送
//        List<ApplyReimbursement> applyReimbursementListForSend = applyReimbursementService.selectList(new EntityWrapper<ApplyReimbursement>().eq("approve_id",approveId));
//        try {
//            createWord(applyReimbursementListForSend,companyType);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//
//    @Autowired
//    private DDService ddService;
//
//    @Autowired
//    private ApplyReimbursementLogService applyReimbursementLogService;
//
//    @Override
//    public void failCallBackReTry(String param) throws Exception {
//        Map<String,Object> req = JsonUtil.json2Map(param);
//
//        String startTime =req.get("startTime")+"";
//        String endTime =req.get("endTime")+"";
//
//        String dateNowStr = DateUtil.formatDate(DateUtil.getNow());
//
//        if(org.apache.commons.lang3.StringUtils.isBlank(startTime)){
//            startTime = dateNowStr + " 00:00:00";
//        }
//
//        if(org.apache.commons.lang3.StringUtils.isBlank(endTime)){
//            endTime = dateNowStr + " 23:59:59";
//        }
//
//        //删除log表中的数据，每次同步当天截止到当前时间的全部数据
//        applyReimbursementLogService.truncateTable();
//
//        ddService.createAplyInfoExcel(startTime,endTime,"fc","fc");
//        ddService.createAplyInfoExcel(startTime,endTime,"fc","fc_normal");
//
//        ddService.createLawFeeInfo(startTime,endTime,"fc");
//        ddService.createBorrowInfo(startTime,endTime,"fc");
//        ddService.createBankTreasurerInfo(startTime,endTime,"fc");
//
//        List<ApplyReimbursementLog> applyReimbursementLogs =  applyReimbursementLogService.getCallBackFailLog();
//        if(!CollectionUtils.isEmpty(applyReimbursementLogs)){
//            for (ApplyReimbursementLog log:applyReimbursementLogs) {
//                this.senBills(log.getProcessCode(),log.getProcessId());
//            }
//
//        }
//    }
//
//    private String isNull(String param){
//        return param==null?"":param;
//    }
//
//
//    public void createWord(List<ApplyReimbursement> applyReimbursementListForSend,String companyType) throws Exception {
//
//        token = getToken(companyType);
//
//        if(!CollectionUtils.isEmpty(applyReimbursementListForSend)){
//            for (ApplyReimbursement reimbursement:applyReimbursementListForSend){
//                LOG.info("发送单号【{}】",reimbursement.getApproveId());
//                SendDingdingMsgVo vo = new SendDingdingMsgVo();
//                vo.setCompanyName(reimbursement.getCompanyName());
//                vo.setExpenseDepartment(reimbursement.getExpenseDepartment());
//                vo.setApproveTime(DateUtil.formatDate(reimbursement.getApproveTime()));
//                vo.setApproveId(reimbursement.getApproveId());
//                vo.setPayee(reimbursement.getPayee());
//                vo.setAttachNum(reimbursement.getAttachNum()+"");
//                vo.setTotalAmountBig(reimbursement.getTotalAmountBig());
//                vo.setTotalAmount(reimbursement.getTotalAmount()+"");
//                vo.setApplyUser(isNull(reimbursement.getUserName()));
//                vo.setDocumentType(reimbursement.getDocumentType());
//
//                List<ApplyReimbursementDetail> details = applyReimbursementDetailService.selectList(new EntityWrapper<ApplyReimbursementDetail>().eq("approve_id",reimbursement.getApproveId()));
//                vo.setApplyReimbursementDetails(details);
//
//                //获取审批流信息
//
//                DdUserSyn ddUserSyn = ddUserSynService.selectOne(new EntityWrapper<DdUserSyn>().eq("user_id",reimbursement.getUserId()));
//
//                List<ApplyReimbursementProcess> processList = applyReimbursementProcessService.selectList(new EntityWrapper<ApplyReimbursementProcess>().eq("approve_id",reimbursement.getApproveId()));
//
//                if("57440735".equals(ddUserSyn.getDeptId())){
//                    String cwzgIndex = "";
//                    for(ApplyReimbursementProcess process:processList){
//                        if("财务主管".equals(process.getApproveUserPostition())){
//                            cwzgIndex = process.getAproveIndex();
//                        }
//                    }
//
//                    Iterator<ApplyReimbursementProcess> it = processList.iterator();
//                    while (it.hasNext()){
//
//                        ApplyReimbursementProcess process = it.next();
//                        if(Integer.parseInt(process.getAproveIndex())<Integer.parseInt(cwzgIndex)){
//                            it.remove();
//                        }
//                    }
//
//                    for(int i=0;i<processList.size();i++){
//                        ApplyReimbursementProcess process = processList.get(i);
//                        process.setAproveIndex((i+1)+"");
//                    }
//                }
//
//                if(!CollectionUtils.isEmpty(processList)){
//                    for (ApplyReimbursementProcess process:processList){
//
//                        if(StringUtils.isEmpty(process.getApproveUserPostition())){
//                            process.setApproveUserPostition(process.getApproveUserName());
//                        }
//
//                        if("全盘会计".equals(process.getApproveUserPostition())){
//                            process.setApproveUserPostition("财务");
//                        }
//
//                        int approveIndex = Integer.parseInt(process.getAproveIndex());
//                        switch (approveIndex){
//                            case 1:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveOne("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveOne("黄柳华");
//                                } else{
//                                    vo.setApproveOne(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveOneTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 2:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveTwo("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveTwo("黄柳华");
//                                }else {
//                                    vo.setApproveTwo(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveTwoTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 3:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveThree("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveThree("黄柳华");
//                                }else {
//                                    vo.setApproveThree(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveThreeTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 4:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveFour("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveFour("黄柳华");
//                                }else {
//                                    vo.setApproveFour(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveFourTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 5:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveFive("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveFive("黄柳华");
//                                }else {
//                                    vo.setApproveFive(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveFiveTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 6:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveSix("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveSix("黄柳华");
//                                }else {
//                                    vo.setApproveSix(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveSixTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 7:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveSeven("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveSeven("黄柳华");
//                                }else {
//                                    vo.setApproveSeven(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveSevenTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 8:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveEight("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveEight("黄柳华");
//                                }else {
//                                    vo.setApproveEight(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveEightTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            case 9:
//                                if("总裁".equals(process.getApproveUserName())){
//                                    vo.setApproveNine("黄柳华");
//                                }else if("CEO".equals(process.getApproveUserName())){
//                                    vo.setApproveNine("黄柳华");
//                                }else {
//                                    vo.setApproveNine(isNull(process.getApproveUserName()));
//                                }
//                                vo.setApproveNineTitle(isNull(process.getApproveUserPostition()));
//                                break;
//                            default:
//                        }
//                    }
//
//                    String  fullFilePath = "";
//                    vo.setAttachNum("");
//                    if("ryx".equals(companyType)){
//
//                        vo.setApproveOne("");
//                        vo.setApproveTwo("");
//                        vo.setApproveThree("");
//                        vo.setApproveFour("");
//                        vo.setApproveFive("");
//
//                        vo.setApproveOneTitle("");
//                        vo.setApproveTwoTitle("");
//                        vo.setApproveThreeTitle("");
//                        vo.setApproveFourTitle("");
//                        vo.setApproveFiveTitle("");
//
//                        fullFilePath = wordAction.createWord(vo,4);
//                    }else {
//                        fullFilePath = wordAction.createWord(vo,processList.size());
//                    }
//                    DingTalkClient client_uploadFile = new DefaultDingTalkClient("https://oapi.dingtalk.com/media/upload");
//                    OapiMediaUploadRequest request = new OapiMediaUploadRequest();
//                    request.setType("file");
//                    request.setMedia(new FileItem(fullFilePath));
//                    OapiMediaUploadResponse response = client_uploadFile.execute(request,token);
//                    ApplyReimbursement applyReimbursement = new ApplyReimbursement();
//                    if(response.getErrcode()==0){
//
//                        applyReimbursement.setApproveId(reimbursement.getApproveId());
//                        applyReimbursement.setDataCode(response.getMediaId());
//
//                    }
//
//
//                    DingTalkClient client_sendFile = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/message/corpconversation/asyncsend_v2");
//
//                    OapiMessageCorpconversationAsyncsendV2Request request_sendFile = new OapiMessageCorpconversationAsyncsendV2Request();
//                    if("0".equals(isSend2TruePerson)){
//                        request_sendFile.setUseridList("01363156031159625984");
//                    }else {
//                        request_sendFile.setUseridList(reimbursement.getUserId());
//                    }
//                    long agentId = 0L;
//                    if("ryx".equals(companyType)){
//                        agentId = agentIdRyx;
//                    }else if("fc".equals(companyType)){
//                        agentId = agentIdFc;
//                    }
//                    request_sendFile.setAgentId(agentId);
//                    request_sendFile.setToAllUser(false);
//
//                    OapiMessageCorpconversationAsyncsendV2Request.Msg msg = new OapiMessageCorpconversationAsyncsendV2Request.Msg();
//
//                    msg.setMsgtype("file");
//                    msg.setFile(new OapiMessageCorpconversationAsyncsendV2Request.File());
//                    msg.getFile().setMediaId(response.getMediaId());
//                    request_sendFile.setMsg(msg);
//
//                    OapiMessageCorpconversationAsyncsendV2Response response_sendFile = client_sendFile.execute(request_sendFile,token);
//                    if(response_sendFile.getErrcode()==0){
//                        applyReimbursement.setTaskId(response_sendFile.getTaskId()+"");
//                        applyReimbursement.setIsSend(1);
//                        applyReimbursementService.update(applyReimbursement,new EntityWrapper<ApplyReimbursement>().eq("approve_id",reimbursement.getApproveId()));
//                    }
//                }
//
//            }
//        }
//    }
//
//
//
//
//    private static Map<String,Object> getBankTreasurerInfo(String resp,String approveId,String companyType){
//
//        Map<String,Object> resultMap = new HashMap<>();
//
//        String json = resp;
//        String approveResult = JSONPath.read(json, "$.process_instance.result").toString();
//        String approveStatus = JSONPath.read(json, "$.process_instance.status").toString();
//
//        //流程结束，审批通过
//        JSONArray array = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.form_component_values").toString());
//        Date applyTime = DateUtil.getDate(JSONPath.read(json, "$.process_instance.create_time").toString(), "yyyy-MM-dd HH:mm:ss");
//        String businessId = JSONPath.read(json, "$.process_instance.business_id").toString();
//        String userId = JSONPath.read(json, "$.process_instance.originator_userid").toString();
//        ApplyReimbursement applyReimbursement = new ApplyReimbursement();
//        applyReimbursement.setApproveId(businessId);
//        applyReimbursement.setProcessId(approveId);
//        applyReimbursement.setUserId(userId);
//        applyReimbursement.setApproveTime(applyTime);
//        applyReimbursement.setCompanyType(companyType);
//        applyReimbursement.setDocumentType("资金调拨单");
//        applyReimbursement.setExpenseDepartment("财务中心");
//        String payType = "";
//        if(array != null){
//            for(Object obj:array){
//                Map<String,Object> item = JsonUtil.json2Map(JsonUtil.obj2Str(obj));
//
//                if("付款公司".equals(item.get("name")+"")){
//
//                    applyReimbursement.setCompanyName(item.get("value")+"");
//                }
//
//                if("收款单位".equals(item.get("name")+"")){
//
//                    applyReimbursement.setPayee(item.get("value")+"");
//                }
//
//                if("付款方式".equals(item.get("name")+"")){
//                    payType = item.get("value")+"";
//                }
//                if("附件".equals(item.get("name")+"")){
//                    JSONArray attachArray = JSONArray.parseArray(item.get("value")+"");
//                    applyReimbursement.setAttachNum(attachArray==null?0:attachArray.size());
//                }
//
//                if("付款总额".equals(item.get("name")+"")){
//                    applyReimbursement.setTotalAmount(item.get("value")+"".trim());
//                    Map<String,Object> amountJson = JsonUtil.json2Map(item.get("ext_value")+"");
//                    applyReimbursement.setTotalAmountBig(amountJson.get("upper")+"");
//                }
//
//                if("明细".equals(item.get("name")+"")){
//                    JSONArray detailArray = JSONArray.parseArray(item.get("value")+"");
//                    List<ApplyReimbursementDetail> applyReimbursementDetails = new ArrayList<>();
//                    if(detailArray != null){
//
//                        for (int i=0;i<detailArray.size();i++){
//                            Object detail =detailArray.get(i);
//                            ApplyReimbursementDetail applyReimbursementDetail = new ApplyReimbursementDetail();
//                            Map<String,Object> detailMap = JsonUtil.json2Map(JsonUtil.obj2Str(detail));
//                            List<Object> mapList = JsonUtil.json2List(JsonUtil.obj2Str(detailMap.get("rowValue")),Object.class);
//                            if(!CollectionUtils.isEmpty(mapList)){
//                                for(Object detailItem:mapList){
//                                    Map<String,Object> itemMap = JsonUtil.json2Map(JsonUtil.obj2Str(detailItem));
//                                    if("付款总额".equals(itemMap.get("label")+"")){
//                                        if(itemMap.get("value") != null){
//                                            applyReimbursementDetail.setAmount(itemMap.get("value")+"".trim());
//                                        }
//
//                                    }
//
//                                    if("付款类别".equals(itemMap.get("label")+"")){
//                                        applyReimbursementDetail.setFeeName(itemMap.get("value")+"");
//                                    }
//
//                                }
//                                applyReimbursementDetail.setApproveId(businessId);
//                                applyReimbursementDetail.setCreateTime(DateUtil.getNow());
//                                applyReimbursementDetail.setAbstractNote(applyReimbursementDetail.getFeeName());
//                                applyReimbursementDetail.setIndex((i+1)+"");
//                                applyReimbursementDetails.add(applyReimbursementDetail);
//                            }
//
//
//                        }
//                    }
//                    resultMap.put("applyReimbursementDetails",applyReimbursementDetails);
//                }
//
//                resultMap.put("payType",payType);
//            }
//        }
//
//        List<ApplyReimbursementProcess> applyReimbursementProcessList = new ArrayList<>();
//        JSONArray taskArray = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.tasks").toString());
//        if(taskArray != null){
//            for(int i=1;i<=taskArray.size();i++){
//                Object taskItem = taskArray.get(i-1);
//                Map<String,Object> taskMap = JsonUtil.json2Map(JsonUtil.obj2Str(taskItem));
//                ApplyReimbursementProcess applyReimbursementProcess = new ApplyReimbursementProcess();
//                applyReimbursementProcess.setApproveId(businessId);
//                if(taskMap.get("create_time") != null){
//                    applyReimbursementProcess.setApproveTime(DateUtil.getDateTime(taskMap.get("create_time")+""));
//                }
//                applyReimbursementProcess.setApproveUserId(taskMap.get("userid")+"");
////                applyReimbursementProcess.setAproveIndex(i+"");
//                applyReimbursementProcess.setCreateTime(taskMap.get("finish_time") == null?null:DateUtil.getDateTime(taskMap.get("finish_time")+""));
//                applyReimbursementProcessList.add(applyReimbursementProcess);
//            }
//            Collections.sort(applyReimbursementProcessList);
//            Iterator<ApplyReimbursementProcess> it = applyReimbursementProcessList.iterator();
//
//            for(int i=0;i<applyReimbursementProcessList.size();i++){
//                ApplyReimbursementProcess process = applyReimbursementProcessList.get(i);
//                process.setAproveIndex((i+1)+"");
//            }
//        }
//
//        if ("COMPLETED".equals(approveStatus) && "agree".equals(approveResult)) {
//            applyReimbursement.setApproveStatus(1);
//        }
//
//        resultMap.put("applyReimbursementProcessList",applyReimbursementProcessList);
//        resultMap.put("applyReimbursement",applyReimbursement);
//
//
//        return resultMap;
//
//    }
//
//
//    private static Map<String,Object> getBorrowMonyBillForFc(String resp,String approveId,String companyType){
//        Map<String,Object> resultMap = new HashMap<>();
//
//        String json = resp;
//        String approveResult = JSONPath.read(json, "$.process_instance.result").toString();
//        String approveStatus = JSONPath.read(json, "$.process_instance.status").toString();
//
//        //流程结束，审批通过
//        JSONArray array = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.form_component_values").toString());
//        Date applyTime = DateUtil.getDate(JSONPath.read(json, "$.process_instance.create_time").toString(), "yyyy-MM-dd HH:mm:ss");
//        String businessId = JSONPath.read(json, "$.process_instance.business_id").toString();
//        String userId = JSONPath.read(json, "$.process_instance.originator_userid").toString();
//        ApplyReimbursement applyReimbursement = new ApplyReimbursement();
//        applyReimbursement.setApproveId(businessId);
//        applyReimbursement.setProcessId(approveId);
//        applyReimbursement.setUserId(userId);
//        applyReimbursement.setApproveTime(applyTime);
//        applyReimbursement.setCompanyType(companyType);
//        applyReimbursement.setDocumentType("借款单");
//        String borrowType = "";
//        String borrowmoney = "";
//        if(array != null){
//            for(Object obj:array){
//                Map<String,Object> item = JsonUtil.json2Map(JsonUtil.obj2Str(obj));
//                if("公司".equals(item.get("name")+"")){
//                    applyReimbursement.setCompanyName(item.get("value")+"");
//                }
//                if("借款中心".equals(item.get("name")+"")){
//
//                    applyReimbursement.setExpenseDepartment(item.get("value")+"");
//                }
//
//                if("借款人".equals(item.get("name")+"")){
//                    applyReimbursement.setPayee(item.get("value")+"");
//                }
//                if("附件".equals(item.get("name")+"")){
//                    JSONArray attachArray = JSONArray.parseArray(item.get("value")+"");
//                    applyReimbursement.setAttachNum(attachArray==null?0:attachArray.size());
//                }
//
//                if("金额（元）".equals(item.get("name")+"")){
//                    applyReimbursement.setTotalAmount(item.get("value")+"".trim());
//                    Map<String,Object> amountJson = JsonUtil.json2Map(item.get("ext_value")+"");
//                    applyReimbursement.setTotalAmountBig(amountJson.get("upper")+"");
//                }
//
//                if("借款种类".equals(item.get("name")+"")){
//                    borrowType = item.get("value")+"";
//                }
//
//                if("金额（元）".equals(item.get("name")+"")){
//                    borrowmoney = item.get("value")+"".trim();
//
//                }
//
//                resultMap.put("payType","转账");
//            }
//
//
//            List<ApplyReimbursementDetail> applyReimbursementDetails = new ArrayList<>();
//            ApplyReimbursementDetail applyReimbursementDetail = new ApplyReimbursementDetail();
//
//            applyReimbursementDetail.setApproveId(businessId);
//            applyReimbursementDetail.setCreateTime(DateUtil.getNow());
//            applyReimbursementDetail.setIndex("1");
//            applyReimbursementDetail.setPayType("转账");
//            applyReimbursementDetail.setAbstractNote("员工借款");
//            applyReimbursementDetail.setAmount(borrowmoney);
//            applyReimbursementDetail.setFeeName(borrowType);
//            applyReimbursementDetails.add(applyReimbursementDetail);
//
//            resultMap.put("applyReimbursementDetails",applyReimbursementDetails);
//
//        }
//
//        List<ApplyReimbursementProcess> applyReimbursementProcessList = new ArrayList<>();
//        JSONArray taskArray = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.tasks").toString());
//        if(taskArray != null){
//            for(int i=1;i<=taskArray.size();i++){
//                Object taskItem = taskArray.get(i-1);
//                Map<String,Object> taskMap = JsonUtil.json2Map(JsonUtil.obj2Str(taskItem));
//                ApplyReimbursementProcess applyReimbursementProcess = new ApplyReimbursementProcess();
//                applyReimbursementProcess.setApproveId(businessId);
//                if(taskMap.get("create_time") != null){
//                    applyReimbursementProcess.setApproveTime(DateUtil.getDateTime(taskMap.get("create_time")+""));
//                }
//                applyReimbursementProcess.setApproveUserId(taskMap.get("userid")+"");
////                applyReimbursementProcess.setAproveIndex(i+"");
//                applyReimbursementProcess.setCreateTime(taskMap.get("finish_time") == null?null:DateUtil.getDateTime(taskMap.get("finish_time")+""));
//                applyReimbursementProcessList.add(applyReimbursementProcess);
//            }
//            Collections.sort(applyReimbursementProcessList);
//            Iterator<ApplyReimbursementProcess> it = applyReimbursementProcessList.iterator();
//
//            for(int i=0;i<applyReimbursementProcessList.size();i++){
//                ApplyReimbursementProcess process = applyReimbursementProcessList.get(i);
//                process.setAproveIndex((i+1)+"");
//            }
//        }
//
//        if ("COMPLETED".equals(approveStatus) && "agree".equals(approveResult)) {
//            applyReimbursement.setApproveStatus(1);
//        }
//
//        resultMap.put("applyReimbursementProcessList",applyReimbursementProcessList);
//        resultMap.put("applyReimbursement",applyReimbursement);
//
//
//        return resultMap;
//    }
//
//
//    /**
//     * 富成法务费
//     * @param resp
//     * @param approveId
//     * @param companyType
//     * @return
//     */
//    private static Map<String,Object> getLawFeeBillForFc(String resp,String approveId,String companyType){
//
//        Map<String,Object> resultMap = new HashMap<>();
//
//        String json = resp;
//        String approveResult = JSONPath.read(json, "$.process_instance.result").toString();
//        String approveStatus = JSONPath.read(json, "$.process_instance.status").toString();
//
//        //流程结束，审批通过
//        JSONArray array = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.form_component_values").toString());
//        Date applyTime = DateUtil.getDate(JSONPath.read(json, "$.process_instance.create_time").toString(), "yyyy-MM-dd HH:mm:ss");
//        String businessId = JSONPath.read(json, "$.process_instance.business_id").toString();
//        String userId = JSONPath.read(json, "$.process_instance.originator_userid").toString();
//        ApplyReimbursement applyReimbursement = new ApplyReimbursement();
//        applyReimbursement.setApproveId(businessId);
//        applyReimbursement.setProcessId(approveId);
//        applyReimbursement.setUserId(userId);
//        applyReimbursement.setApproveTime(applyTime);
//        applyReimbursement.setCompanyType(companyType);
//        applyReimbursement.setCompanyName("深圳市富诚资产管理有限公司");
//        String payType = "";
//        String feeName = "";
//        if(array != null){
//            for(Object obj:array){
//                Map<String,Object> item = JsonUtil.json2Map(JsonUtil.obj2Str(obj));
//                if("报销部门".equals(item.get("name")+"")){
//
//                    applyReimbursement.setExpenseDepartment(item.get("value")+"");
//                }
//
//                if("报销类型".equals(item.get("name")+"")){
//
//                    applyReimbursement.setDocumentType(item.get("value")+"");
//                }
//
//                if("付款类别".equals(item.get("name")+"")){
//
//                    feeName = item.get("value")+"";
//                }
//
//                if("付款方式".equals(item.get("name")+"")){
//                    payType = item.get("value")+"";
//                }
//                if("附件".equals(item.get("name")+"")){
//                    JSONArray attachArray = JSONArray.parseArray(item.get("value")+"");
//                    applyReimbursement.setAttachNum(attachArray==null?0:attachArray.size());
//                }
//
//                if("合计金额".equals(item.get("name")+"")){
//                    applyReimbursement.setTotalAmount(item.get("value")+"".trim());
//                    Map<String,Object> amountJson = JsonUtil.json2Map(item.get("ext_value")+"");
//                    applyReimbursement.setTotalAmountBig(amountJson.get("upper")+"");
//                }
//
//                if("明细".equals(item.get("name")+"")){
//                    JSONArray detailArray = JSONArray.parseArray(item.get("value")+"");
//                    List<ApplyReimbursementDetail> applyReimbursementDetails = new ArrayList<>();
//                    if(detailArray != null){
//
//                        for (int i=0;i<detailArray.size();i++){
//                            Object detail =detailArray.get(i);
//                            ApplyReimbursementDetail applyReimbursementDetail = new ApplyReimbursementDetail();
//                            Map<String,Object> detailMap = JsonUtil.json2Map(JsonUtil.obj2Str(detail));
//                            List<Object> mapList = JsonUtil.json2List(JsonUtil.obj2Str(detailMap.get("rowValue")),Object.class);
//                            if(!CollectionUtils.isEmpty(mapList)){
//                                for(Object detailItem:mapList){
//                                    Map<String,Object> itemMap = JsonUtil.json2Map(JsonUtil.obj2Str(detailItem));
//                                    if("付款金额".equals(itemMap.get("label")+"")){
//                                        if(itemMap.get("value") != null){
//                                            applyReimbursementDetail.setAmount(itemMap.get("value")+"".trim());
//                                        }
//
//                                    }
//                                    if("收款单位".equals(itemMap.get("label")+"")){
//                                        applyReimbursement.setPayee(itemMap.get("value")+"");
//                                    }
//                                }
//                                applyReimbursementDetail.setFeeName(feeName);
//                                applyReimbursementDetail.setApproveId(businessId);
//                                applyReimbursementDetail.setCreateTime(DateUtil.getNow());
//                                applyReimbursementDetail.setAbstractNote(applyReimbursementDetail.getFeeName());
//                                applyReimbursementDetail.setIndex((i+1)+"");
//                                applyReimbursementDetails.add(applyReimbursementDetail);
//                            }
//
//
//                        }
//                    }
//                    resultMap.put("applyReimbursementDetails",applyReimbursementDetails);
//                }
//
//                resultMap.put("payType",payType);
//            }
//        }
//
//        List<ApplyReimbursementProcess> applyReimbursementProcessList = new ArrayList<>();
//        JSONArray taskArray = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.tasks").toString());
//        if(taskArray != null){
//            for(int i=1;i<=taskArray.size();i++){
//                Object taskItem = taskArray.get(i-1);
//                Map<String,Object> taskMap = JsonUtil.json2Map(JsonUtil.obj2Str(taskItem));
//                ApplyReimbursementProcess applyReimbursementProcess = new ApplyReimbursementProcess();
//                applyReimbursementProcess.setApproveId(businessId);
//                if(taskMap.get("create_time") != null){
//                    applyReimbursementProcess.setApproveTime(DateUtil.getDateTime(taskMap.get("create_time")+""));
//                }
//                applyReimbursementProcess.setApproveUserId(taskMap.get("userid")+"");
////                applyReimbursementProcess.setAproveIndex(i+"");
//                applyReimbursementProcess.setCreateTime(taskMap.get("finish_time") == null?null:DateUtil.getDateTime(taskMap.get("finish_time")+""));
//                applyReimbursementProcessList.add(applyReimbursementProcess);
//            }
//            Collections.sort(applyReimbursementProcessList);
//            Iterator<ApplyReimbursementProcess> it = applyReimbursementProcessList.iterator();
//
//            for(int i=0;i<applyReimbursementProcessList.size();i++){
//                ApplyReimbursementProcess process = applyReimbursementProcessList.get(i);
//                process.setAproveIndex((i+1)+"");
//            }
//        }
//
//        if ("COMPLETED".equals(approveStatus) && "agree".equals(approveResult)) {
//            applyReimbursement.setApproveStatus(1);
//        }
//
//        resultMap.put("applyReimbursementProcessList",applyReimbursementProcessList);
//        resultMap.put("applyReimbursement",applyReimbursement);
//
//
//        return resultMap;
//
//
//    }
//
//
//    private String getToken(String companyType) throws Exception {
//        String token = "";
//        //获取钉钉token
//        Map<String,Object> tokenReq = new HashMap<>();
//        tokenReq.put("companyType",companyType);
//        Result tokenResult = eipoutFeign.getDDTokenOther(tokenReq);
//        if("0000".equals(tokenResult.getReturnCode())){
//            Map<String,Object> resultMap = JsonUtil.json2Map(JsonUtil.obj2Str(tokenResult.getData()));
//            token = resultMap.get("accessToken")+"";
//        }else {
//            throw new Exception("获取钉钉token异常！"+tokenResult.getReturnCode()+tokenResult.getCodeDesc());
//        }
//        return token;
//    }
//
//
//    private Map<String, Object> requestForApproveDetailsFromEip(String approveIds) {
//        Map<String, Object> result = new HashMap<>();
//        Map<String, Object> overTimeDetailreq = new HashMap<>();
//        overTimeDetailreq.put("process_instance_id", approveIds);
//        overTimeDetailreq.put("token", token);
//        Result eipResult = eipoutFeign.getOverTimeDetail(overTimeDetailreq);
//        if ("0000".equals(eipResult.getReturnCode())) {
//            String overTimeDetailResp = JSONObject.toJSONString(eipResult.getData());
//            result.put("approveDetailResp", overTimeDetailResp);
//            return result;
//        }
//        return null;
//    }
//
//
//    private static Map<String,Object> getExpenseAccountForRyx(String resp,String approveId,String companyType){
//
//        Map<String,Object> resultMap = new HashMap<>();
//
//        String json = resp;
//        String approveResult = JSONPath.read(json, "$.process_instance.result").toString();
//        String approveStatus = JSONPath.read(json, "$.process_instance.status").toString();
//
//        //流程结束，审批通过
//        JSONArray array = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.form_component_values").toString());
//        Date applyTime = DateUtil.getDate(JSONPath.read(json, "$.process_instance.create_time").toString(), "yyyy-MM-dd HH:mm:ss");
//        String businessId = JSONPath.read(json, "$.process_instance.business_id").toString();
//        String userId = JSONPath.read(json, "$.process_instance.originator_userid").toString();
//        ApplyReimbursement applyReimbursement = new ApplyReimbursement();
//        applyReimbursement.setApproveId(businessId);
//        applyReimbursement.setProcessId(approveId);
//        applyReimbursement.setUserId(userId);
//        applyReimbursement.setApproveTime(applyTime);
//        applyReimbursement.setCompanyType(companyType);
//        applyReimbursement.setDocumentType("费用报销单");
//        String payType = "";
//        if(array != null){
//            for(Object obj:array){
//                Map<String,Object> item = JsonUtil.json2Map(JsonUtil.obj2Str(obj));
//                if("报销公司".equals(item.get("name")+"")){
//                    applyReimbursement.setCompanyName(item.get("value")+"");
//                }
//                if("ryx".equals(companyType)){
//                    if("报销部门".equals(item.get("name")+"")){
//
//                        applyReimbursement.setExpenseDepartment(item.get("value")+"");
//                    }
//                }else if("fc".equals(companyType)){
//                    if("费用归属中心".equals(item.get("name")+"")){
//                        applyReimbursement.setExpenseDepartment(item.get("value")+"");
//                    }
//                }
//
//                if("收款单位".equals(item.get("name")+"")){
//                    applyReimbursement.setPayee(item.get("value")+"");
//                }
//                if("付款方式".equals(item.get("name")+"")){
//                    payType = item.get("value")+"";
//                }
//                if("附件".equals(item.get("name")+"")){
//                    JSONArray attachArray = JSONArray.parseArray(item.get("value")+"");
//                    applyReimbursement.setAttachNum(attachArray==null?0:attachArray.size());
//                }
//                if("fc".equals(companyType)){
//
//                    if("合计金额".equals(item.get("name")+"")){
//                        applyReimbursement.setTotalAmount(item.get("value")+"".trim());
//                        Map<String,Object> amountJson = JsonUtil.json2Map(item.get("ext_value")+"");
//                        applyReimbursement.setTotalAmountBig(amountJson.get("upper")+"");
//                    }
//
//                }else if("ryx".equals(companyType)){
//                    if("付款总额(元)".equals(item.get("name")+"")){
//                        applyReimbursement.setTotalAmount(item.get("value")+"".trim());
//                        Map<String,Object> amountJson = JsonUtil.json2Map(item.get("ext_value")+"");
//                        applyReimbursement.setTotalAmountBig(amountJson.get("upper")+"");
//                    }
//                }
//
//                if("fc".equals(companyType)){
//
//                    if("明细".equals(item.get("name")+"")){
//                        JSONArray detailArray = JSONArray.parseArray(item.get("value")+"");
//                        List<ApplyReimbursementDetail> applyReimbursementDetails = new ArrayList<>();
//                        if(detailArray != null){
//
//                            for (int i=0;i<detailArray.size();i++){
//                                Object detail =detailArray.get(i);
//                                ApplyReimbursementDetail applyReimbursementDetail = new ApplyReimbursementDetail();
//                                Map<String,Object> detailMap = JsonUtil.json2Map(JsonUtil.obj2Str(detail));
//                                List<Object> mapList = JsonUtil.json2List(JsonUtil.obj2Str(detailMap.get("rowValue")),Object.class);
//                                if(!CollectionUtils.isEmpty(mapList)){
//                                    for(Object detailItem:mapList){
//                                        Map<String,Object> itemMap = JsonUtil.json2Map(JsonUtil.obj2Str(detailItem));
//                                        if("付款类别".equals(itemMap.get("label")+"")){
//                                            applyReimbursementDetail.setFeeName(itemMap.get("value")+"");
//                                        }
//                                        if("付款总额".equals(itemMap.get("label")+"")){
//                                            if(itemMap.get("value") != null){
//                                                applyReimbursementDetail.setAmount(itemMap.get("value")+"".trim());
//                                            }
//
//                                        }
//                                    }
//                                    applyReimbursementDetail.setApproveId(businessId);
//                                    applyReimbursementDetail.setCreateTime(DateUtil.getNow());
//                                    applyReimbursementDetail.setAbstractNote(applyReimbursementDetail.getFeeName());
//                                    applyReimbursementDetail.setIndex((i+1)+"");
//                                    applyReimbursementDetails.add(applyReimbursementDetail);
//                                }
//
//
//                            }
//                        }
//                        resultMap.put("applyReimbursementDetails",applyReimbursementDetails);
//                    }
//
//
//
//                }else if("ryx".equals(companyType)){
//                    if("付款明细".equals(item.get("name")+"")){
//                        JSONArray detailArray = JSONArray.parseArray(item.get("value")+"");
//                        List<ApplyReimbursementDetail> applyReimbursementDetails = new ArrayList<>();
//                        if(detailArray != null){
//
//                            for (int i=0;i<detailArray.size();i++){
//                                Object detail =detailArray.get(i);
//                                ApplyReimbursementDetail applyReimbursementDetail = new ApplyReimbursementDetail();
//                                Map<String,Object> detailMap = JsonUtil.json2Map(JsonUtil.obj2Str(detail));
//                                List<Object> mapList = JsonUtil.json2List(JsonUtil.obj2Str(detailMap.get("rowValue")),Object.class);
//                                if(!CollectionUtils.isEmpty(mapList)){
//                                    for(Object detailItem:mapList){
//                                        Map<String,Object> itemMap = JsonUtil.json2Map(JsonUtil.obj2Str(detailItem));
//                                        if("付款类别".equals(itemMap.get("label")+"")){
//                                            applyReimbursementDetail.setFeeName(itemMap.get("value")+"");
//                                        }
//                                        if("付款金额(元)".equals(itemMap.get("label")+"")){
//                                            if(itemMap.get("value") != null){
//                                                applyReimbursementDetail.setAmount(itemMap.get("value")+"".trim());
//                                            }
//
//                                        }
//                                    }
//                                    applyReimbursementDetail.setApproveId(businessId);
//                                    applyReimbursementDetail.setCreateTime(DateUtil.getNow());
//                                    applyReimbursementDetail.setAbstractNote(applyReimbursementDetail.getFeeName());
//                                    applyReimbursementDetail.setIndex((i+1)+"");
//                                    applyReimbursementDetails.add(applyReimbursementDetail);
//                                }
//
//
//                            }
//                        }
//                        resultMap.put("applyReimbursementDetails",applyReimbursementDetails);
//                    }
//                }
//
//                resultMap.put("payType",payType);
//            }
//        }
//
//        List<ApplyReimbursementProcess> applyReimbursementProcessList = new ArrayList<>();
//        JSONArray taskArray = JSONArray.parseArray(JSONPath.read(json, "$.process_instance.tasks").toString());
//        if(taskArray != null){
//            for(int i=1;i<=taskArray.size();i++){
//                Object taskItem = taskArray.get(i-1);
//                Map<String,Object> taskMap = JsonUtil.json2Map(JsonUtil.obj2Str(taskItem));
//                ApplyReimbursementProcess applyReimbursementProcess = new ApplyReimbursementProcess();
//                applyReimbursementProcess.setApproveId(businessId);
//                if(taskMap.get("create_time") != null){
//                    applyReimbursementProcess.setApproveTime(DateUtil.getDateTime(taskMap.get("create_time")+""));
//                }
//                applyReimbursementProcess.setApproveUserId(taskMap.get("userid")+"");
////                applyReimbursementProcess.setAproveIndex(i+"");
//                applyReimbursementProcess.setCreateTime(taskMap.get("finish_time") == null?null:DateUtil.getDateTime(taskMap.get("finish_time")+""));
//                applyReimbursementProcessList.add(applyReimbursementProcess);
//            }
//            Collections.sort(applyReimbursementProcessList);
//            Iterator<ApplyReimbursementProcess> it = applyReimbursementProcessList.iterator();
//
//            for(int i=0;i<applyReimbursementProcessList.size();i++){
//                ApplyReimbursementProcess process = applyReimbursementProcessList.get(i);
//                process.setAproveIndex((i+1)+"");
//            }
//        }
//
//        if ("COMPLETED".equals(approveStatus) && "agree".equals(approveResult)) {
//            applyReimbursement.setApproveStatus(1);
//        }
//
//        resultMap.put("applyReimbursementProcessList",applyReimbursementProcessList);
//        resultMap.put("applyReimbursement",applyReimbursement);
//
//
//        return resultMap;
//
//    }
//
//}
